#ifndef HARDWARE_PROFILE_H
#define HARDWARE_PROFILE_H

/*******************************************************************/
    /******** USB stack hardware selection options *********************/
    /*******************************************************************/
    //This section is the set of definitions required by the MCHPFSUSB
    //  framework.  These definitions tell the firmware what mode it is
    //  running in, and where it can find the results to some information
    //  that the stack needs.
    //These definitions are required by every application developed with
    //  this revision of the MCHPFSUSB framework.  Please review each
    //  option carefully and determine which options are desired/required
    //  for your application.
	
	//#define USE_USB_BUS_SENSE_IO
    #define tris_usb_bus_sense  TRISAbits.TRISA1    // Input
    
    #if defined(USE_USB_BUS_SENSE_IO)
    	#define USB_BUS_SENSE       PORTAbits.RA1
    #else
    	#define USB_BUS_SENSE       1
    #endif
    
    //#define USE_SELF_POWER_SENSE_IO	
    #define tris_self_power     TRISAbits.TRISA2    // Input
    
    #if defined(USE_SELF_POWER_SENSE_IO)
    	#define self_power          PORTAbits.RA2
    #else
    	#define self_power          1
    #endif

	/* // External Transceiver Interface
	#define tris_usb_vpo        TRISBbits.TRISB3    // Output
	#define tris_usb_vmo        TRISBbits.TRISB2    // Output
	#define tris_usb_rcv        TRISAbits.TRISA4    // Input
	#define tris_usb_vp         TRISCbits.TRISC5    // Input
	#define tris_usb_vm         TRISCbits.TRISC4    // Input
	#define tris_usb_oe         TRISCbits.TRISC1    // Output
	
	#define tris_usb_suspnd     TRISAbits.TRISA3    // Output
	*/
    /*******************************************************************/
    /******** Application specific definitions *************************/
    /*******************************************************************/

    //Uncomment the following line to make the output HEX of this 
    //  project work with the HID Bootloader
    #define PROGRAMMABLE_WITH_USB_HID_BOOTLOADER	

    /** Board definition ***********************************************/
    //These defintions will tell the main() function which board is
    //  currently selected.  This will allow the application to add
    //  the correct configuration bits as wells use the correct
    //  initialization functions for the board.  These defitions are only
    //  required in the stack provided demos.  They are not required in
    //  final application design.
    
    #define DEMO_BOARD LOW_PIN_COUNT_USB_DEVELOPMENT_KIT
    #define LOW_PIN_COUNT_USB_DEVELOPMENT_KIT
		
    #define CLOCK_FREQ 48000000
    #define MEMSIC_ADD 0b00010000
    
    /** L E D ***********************************************************/
	#define led_init() TRISCbits.TRISC4 = OUTPUT_PIN
	#define led_on() PORTCbits.RC4 = 0
	#define led_off() PORTCbits.RC4 = 1
	/** S W I T C H *****************************************************/
	#define switch_init() TRISCbits.TRISC5 = INPUT_PIN
	#define read_switch_status() PORTCbits.RC5
		
    /** I/O pin definitions ********************************************/
    #define INPUT_PIN 1
    #define OUTPUT_PIN 0

#endif  //HARDWARE_PROFILE_H
